from flask import g
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from comment.utils.decorators import login_required
from comment.modules.product import Product
from comment.modules.product_rate import Product_rate
from comment.modules.invest_record  import Invest_record
from comment.modules import db
from financial.resources.transaction.serializer import InvestRecordPaginateSerializer



class Invest_Resource(Resource):
    '''投资记录的资源类'''

    def get(self):
        '''
        投资记录的列表
        :return:
        '''
        rp =RequestParser()
        rp.add_argument('start')#起始时间
        rp.add_argument('end')#结束时间
        rp.add_argument('invest_type')#投资类型  初始值 0  表示购买中的计划
        rp.add_argument('curPage',required=True)#当前页号
        rp.add_argument('per_page',required=True)#每页显示的条数
        args =rp.parse_args()
        start =args.get('start')
        end =args.get('end')
        invest_type =0 if args.get('invest_type') ==None else int(args.get('invest_type'))
        curPage =  int(args.get('curPage'))
        pageSize =int(args.get('per_page'))

        uid = g.user_id

        q = Invest_record.query#得到一个查询对象

        #开始过滤  第一个过滤 根据用户id过滤
        q = q.filter(Invest_record.pUid==uid)

        #第二个过滤 根据投资类型过滤
        q = q.filter(Invest_record.pStatus==invest_type)

        #第三次过滤 根据起始时间和结束时间
        if start and end:
            q = q.filter(db.cast(Invest_record.pDate,db.DATE)>=db.cast(start,db.DATE)).filter(db.cast(Invest_record.pDate,db.DATE)<=db.cast(end,db.DATE))
        data= q.paginate(curPage,pageSize,error_out=False)
        data = InvestRecordPaginateSerializer(data).to_dict() #字典数据

        return {'msg':'success','data':data}

